#include <iostream>

class Empty
{
public:
    // 缺省构造函数，可进行一些初始化操作，这里简单打印提示信息
    Empty()
    {
        std::cout << "Default constructor of Empty is called." << std::endl;
    }
    // 拷贝构造函数，用于对象之间的拷贝初始化
    Empty(const Empty &other)
    {
        std::cout << "Copy constructor of Empty is called." << std::endl;
    }
    // 析构函数，用于释放对象占用的资源，这里打印提示信息
    ~Empty()
    {
        std::cout << "Destructor of Empty is called." << std::endl;
    }
    // 赋值运算符，实现对象之间的赋值操作
    Empty &operator=(const Empty &other)
    {
        if (this != &other)
        {
            std::cout << "Assignment operator of Empty is called." << std::endl;
        }
        return *this;
    }
    // 非const对象的取址运算符
    Empty *operator&()
    {
        std::cout << "Non-const address-of operator of Empty is called." << std::endl;
        return this;
    }
    // const对象的取址运算符
    const Empty *operator&() const
    {
        std::cout << "Const address-of operator of Empty is called." << std::endl;
        return this;
    }
};